Clock recovery pertains to mechanisms used to adjust the frequency of a device's local clock based on a remote device's clock. This is typically used in Multi-channel Video Programming Distributors (MVPDs) to service content over cable, the Internet, satellite, combinations thereof, and/or the like. A head-end station may send video content to home gateways, clients, and/or the like, wherein the video content may be streamed at a rate dictated by the head-end equipment. Local clients may be expected to present the content in sync with the head-end reference clock. An inability to recover the clock may result in buffering under- and over-runs that may be perceived by the viewer as audio and video artifacts (i.e., frame drops or repeats).
Generally, MPEG (Moving Picture Experts Group) clock recovery is performed by comparing the rate of the advancement of a local counter driven by the local clock to the rate of advancement of incoming PCR values (Program Clock Reference—field used to encode source clock information in an MPEG stream). While such an approach may be suitable under certain circumstances, there remains considerable room for improvement. For example, conventional systems may lack a hardware mechanism to determine the value of the local counter as close as possible to the arrival time of a given packet carrying the PCR, which may lead to unacceptable jitter.